package com.snowy.framework.common.resp;


import com.snowy.framework.common.base.dto.BaseReturn;
import com.snowy.framework.common.constant.CommonConstant;
import com.snowy.framework.exception.UABPException;

/**
 * 统一封装返回参数
 */
public class BaseRespUtil {

    /**
     * 返回成功对象 好的
     * @return
     */
    public static BaseResp Success() {
        BaseResp baseResp = BaseResp.builder().build();
        baseResp.setStatus(CommonConstant.RESP_SUCCESS_Status);
        baseResp.setCode(CommonConstant.RESP_SUCCESS_code_200);
        baseResp.setMessage(CommonConstant.RESP_SUCCESS_Msg);
        baseResp.setData(null);
        return baseResp;
    }

    /**
     * 返回成功传回对象
     * @param data
     * @return
     */
    public static <T> BaseResp<T> Success(T data) {
        BaseResp baseResp = BaseResp.builder().build();
        baseResp.setStatus(CommonConstant.RESP_SUCCESS_Status);
        baseResp.setCode(CommonConstant.RESP_SUCCESS_code_200);
        baseResp.setMessage(CommonConstant.RESP_SUCCESS_Msg);
        baseResp.setData(data);
        return baseResp;
    }



    /**
     * 返回错误JSON
     * @param erroCode
     * @param erroMsg
     * @return
     */
    public static BaseResp Error(String erroCode,String erroMsg) {
        BaseResp baseResp = BaseResp.builder().build();
        baseResp.setStatus(CommonConstant.RESP_FAIL__Status);
        baseResp.setCode(erroCode);
        baseResp.setMessage(erroMsg);
        baseResp.setData(null);
        return baseResp;
    }

    /**
     * 返回错误JSON
     * @param erroCode
     * @param erroMsg
     * @return
     */
    public static BaseResp Error(String erroCode,String erroMsg,Object data) {
        BaseResp baseResp = BaseResp.builder().build();
        baseResp.setStatus(CommonConstant.RESP_FAIL__Status);
        baseResp.setCode(erroCode);
        baseResp.setMessage(erroMsg);
        baseResp.setData(data);
        return baseResp;
    }

    /**
     * 返回错误JSON
     * @param e
     * @return
     */
    public static BaseResp Error(String erroCode,Exception e) {
        BaseResp baseResp = BaseResp.builder().build();
        baseResp.setStatus(CommonConstant.RESP_FAIL__Status);
        baseResp.setCode(erroCode);//默认错误编码
        baseResp.setMessage(e.getMessage());
        baseResp.setData(null);

        return baseResp;
    }

    public static BaseResp Error(UABPException e) {
        BaseResp baseResp = BaseResp.builder().build();
        baseResp.setStatus(CommonConstant.RESP_FAIL__Status);
        baseResp.setCode(e.getCode());//默认错误编码
        baseResp.setMessage(e.getMessage());
        baseResp.setData(null);
        return baseResp;
    }

    public static BaseResp Error(Exception e) {
        BaseResp baseResp = BaseResp.builder().build();
        baseResp.setStatus(CommonConstant.RESP_FAIL__Status);
        baseResp.setCode(CommonConstant.RESP_FAIL_code);//默认错误编码
        baseResp.setMessage(e.getMessage());
        baseResp.setData(null);
        return baseResp;
    }

    public static BaseResp Error(BaseReturn baseReturn) {
        BaseResp baseResp = BaseResp.builder().build();
        baseResp.setStatus(CommonConstant.RESP_FAIL__Status);
        baseResp.setCode(baseReturn.getReturnCode());
        baseResp.setMessage(baseReturn.getReturnMsg());
        baseResp.setData(null);
        return baseResp;
    }
}
